//初始化地图
/**
 * 11楼平面循迹
 * 1.添加地图
 * * L.map(<String> id, <Map options> options?)
 * 
 */
var map = L.map('car-map-11').setView([55.505, -0.7], true, 12);
var bounds = [
    [50.42, -0.30],
    [50.57, 0.22]
];
map.fitBounds(bounds);

var customImageUrl = './asset/map_11.png';

L.imageOverlay(customImageUrl, bounds).addTo(map);

map.attributionControl.addAttribution('11楼平面循迹');

//地图事件监听坐标
map.on('click', function (e) {
    var latlng = e.latlng; // 获取点击位置的经纬度坐标
    console.log('点击位置的坐标:', latlng);
    // 在这里执行其他操作，例如将坐标显示在页面上
});

//自定义图标(暂未启用————)
/**
 * @param {String} iconUrl 图标路径
 * @param {Number} iconSize 图标大小: [width, height]
 * @param {Number} iconAnchor 图标锚点: [x, y]
 * @param {Number} popupAnchor 弹出框锚点: [x, y]
 */
// 电梯图标
var elevatorIcon = L.icon({
    iconUrl: './asset/elevator-mark.png',
    iconSize: [20, 20],
    iconAnchor: [25, 25],
    popupAnchor: [0, -25]
});
// 宿舍区域图标
var roomIcon = L.icon({
    iconUrl: './asset/dormitory-mark.png',
    iconSize: [30, 30],
    iconAnchor: [25, 25],
    popupAnchor: [0, -25]
});


// 添加缩放级别改变事件监听器

//(/暂未启用————)



// 添加区域标记
/**
 * 电梯厅1-4
 * 宿舍区域1101-1154
 * 图标可以自定义
 */

//地图数据
/**map_data
 * elevator:电梯厅
 * elevator:{
 *    (变量):{
 *      marker:标记
 *      popup:弹窗信息
 * }
 * }
 * dormitory:宿舍
 * dormitory:{
 *   (变量):{
 *     marker:标记
 *     popup:弹窗信息
 * }
 * }
 */
var map_data = {
    elevator: {
        hall11_1: {
            marker: L.marker([50.4935, 0.1434]),
            popup: '1号电梯厅',
            mapIndex: 2

        },
        hall11_2: {
            marker: L.marker([50.5355, 0.0390]),
            popup: '2号电梯厅',
            mapIndex: 6
        },
        hall11_3: {
            marker: L.marker([50.5185, -0.1080]),
            popup: '3号电梯厅',
            mapIndex: 10
        },
        hall11_4: {
            marker: L.marker([50.5125, -0.2685]),
            popup: '4号电梯厅',
            mapIndex: 14
        }

    },
    dormitory: {
        F11room01_05: {
            marker: L.marker([50.4465, 0.1890]),
            popup: '宿舍：1101-1105',
            mapIndex: 0
        },
        F11room06_10: {
            marker: L.marker([50.4790, 0.1610]),
            popup: '宿舍：1106-1110',
            mapIndex: 1
        },
        F11room11_16: {
            marker: L.marker([50.5234, 0.1195]),
            popup: '宿舍：1111-1116',
            mapIndex: 3
        },
        F11room17_19: {
            marker: L.marker([50.5472, 0.0954]),
            popup: '宿舍：1117-1119',
            mapIndex: 4
        },
        F11room20_24: {
            marker: L.marker([50.5437, 0.0686]),
            popup: '宿舍：1120-1124',
            mapIndex: 5
        },
        F11room25_28: {
            marker: L.marker([50.5363, 0.0167]),
            popup: '宿舍：1125-1128',
            mapIndex: 7
        },
        F11room29_33: {
            marker: L.marker([50.5297, -0.0234]),
            popup: '宿舍：1129-1133',
            mapIndex: 8
        },
        F11room34_38: {
            marker: L.marker([50.5196, -0.0611]),
            popup: '宿舍：1134-1138',
            mapIndex: 9
        },
        F11room39_44: {
            marker: L.marker([50.5195, -0.1410]),
            popup: '宿舍：1139-1144',
            mapIndex: 11
        },
        F11room45_49: {
            marker: L.marker([50.5197, -0.1850]),
            popup: '宿舍：1145-1149',
            mapIndex: 12
        },
        F11room50_54: {
            marker: L.marker([50.5185, -0.2324]),
            popup: '宿舍：1150-1154',
            mapIndex: 13
        },

    },
}

//线段集合

var polyline_data = {

};
//添加标记
function addMarker(e) {
    e.marker.addTo(map)
        .bindPopup(e.popup)
        .openPopup();

}


//添加连线的函数
/**
 * 只有连线的时候才添加标记
 * @param {L.marker} start：起点
 * @param {L.marker} end：终点
 */
function addPolyline(start, end) {
    var latlngs = [start.marker.getLatLng(), end.marker.getLatLng()];
    var polyline = L.polyline(latlngs, {
        color: 'blue'
    }).addTo(map);
    //添加到线段集合
    polyline_data[`${start}` + 'to' + `${end}`] = polyline;
    // 添加标记到地图（仅在连线存在时添加）
    // if (polyline) {
    //     // 添加标记到地图
    //     //增加pop弹窗提示
    //     start.marker.addTo(map)
    //         .bindPopup(start.popup)
    //         .openPopup();
    //     end.marker.addTo(map)
    //         .bindPopup(end.popup)
    //         .openPopup();
    // }
    return polyline; // 返回连线对象以便在删除时使用
}

function getPolyline(start, end) {
    var latlngs = [start.marker.getLatLng(), end.marker.getLatLng()];
    var polyline = L.polyline(latlngs, {
        color: 'blue'
    });
    return polyline; // 返回连线对象以便在删除时使用
}
//删除连线的函数
/**
 * 
 */
function deletePolyline(start, end) {
    //删除map上的线段
    polyline_data[`${start}` + 'to' + `${end}`].remove();

    //删除线段集合中的线段
    delete polyline_data[`${start}` + 'to' + `${end}`];
    //删除标记
    start.marker.remove();
    end.marker.remove();
}
//清除所有图层
function mapClearAll() {
    // 删除地图上的所有连线
    map.eachLayer(function (layer) {
        if (layer instanceof L.Polyline) {
            map.removeLayer(layer);
        }
    });

    //清除标记
    for (var key in map_data.elevator) {
        map_data.elevator[key].marker.remove();
    }
    for (var key in map_data.dormitory) {
        map_data.dormitory[key].marker.remove();
    }
}